A typical computer graphics system employs a memory source of data to be displayed, an address generator, a graphics controller, and a video display unit (e.g., CRT and the like). Graphics commands are transmitted from a host processor and are written to a register interface. Operands of the graphics commands are stored on the graphics controller. Common variations of this include:
(1) the graphics controller reads graphics commands only from main memory via physical dma;
(2) the graphics controller reads graphics commands from physical main memory and can move operands between graphics controller memory and main physical memory. However, graphics operations cannot occur until the data is in graphics controller memory.
The stored operands include source addresses (i.e., main memory addresses) of data to be displayed and so-called destination addresses (i.e., memory locations in a frame buffer that supports the video display). Under the control of timing signals, the address generator provides appropriate pairs or sequences of operand addresses while the graphics controller sequentially operates on respective data to generate desired screen views on the video display unit. In particular, the graphics controller reads memory data into the frame buffer with respective source data being placed at respective destination addresses in the frame buffer. Thereafter, graphics controller provides display of data through the display unit by enabling sequential reading of the contents of the frame buffer. That is, the frame buffer supports raster scanning from a first line through succeeding lines of the screen view on the display unit such that the screen view is continuously refreshed.
Existing problems or disadvantages of computer graphics systems of the prior art include:
Lack of direct access of virtual memory and lack of write access to main memory;
The address generator can only draw to its own memory, i.e., the frame buffer or a graphics-private memory. This is a cost disadvantage, and in the case of large operands can be a perfomance disadvantage;
The application/program (client) requesting execution of a graphics command is required to provide physical addresses if the graphics controller has the capacity to access main physical memory. Furthermore, if a graphics operation spans virtual pages, the client program must segment and translate virtual memory boundaries for each graphics operation so they don't span physical pages;
High overhead for context setup, i.e., setup commands, to support a series of graphics operations and clip list processing commands.